/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package deti.es.persistence.calendar;

import deti.es.persistence.account.AccountDoesNotExist;
import deti.es.ukni.persistence.entity.Band;
import deti.es.ukni.persistence.entity.Event;
import java.util.Date;
import java.util.List;
import java.util.Set;
import javax.ejb.Remote;

/**
 * CalendarManager Remote interface
 *
 * @author ukni
 */
@Remote
public interface CalendarManagerRemote {

    /**
     * Create a new event of the band
     *
     * @param band the band that goes create a event
     * @param eventdate date of a new event
     * @param location the location of a new event
     * @param latitude the latitude coordinate of a new event
     * @param longitude the longitude coordinate of a new event
     * @return a event that was created
     */
    public Event createEvent(Band band, Date eventdate, String location, double latitude,
                                 double longitude);

    /**
     * Get a list of all Events
     *
     * @return a list with all events in the system
     */
    public List<Event> findAllEvents();

    /**
     * Show the Events of the band
     *
     * @param IDBand id of the band for find the band
     * @return a events of the band
     * @throws deti.es.persistence.account.AccountDoesNotExist
     */
    public Set<Event> findBandEvents(Integer IDBand) throws AccountDoesNotExist;

    /**
     * Find a event of the band
     * 
     * @param IDEvent a id of a event that we want find
     * @return a event 
     * @throws deti.es.persistence.calendar.EventDoesNotExist
     */
    public Event findBandEvent(Integer IDEvent) throws EventDoesNotExist;

}